#ifndef SIMULADOR_H
#define	SIMULADOR_H

#include <stdlib.h>
#include <stdio.h>
//DESCOMENTAR PARA QUE FUNCIONE EN UNIX
#include <curses.h>
//DESCOMENTAR PARA QUE FUNCIONE EN CIGWIN
//#include "ncurses/ncurses.h"
#include "admin_memoria.h"
#define CANT_MAX_PROC 40
#define CANT_MAX_MEM_DIN    20

struct stuMemoriaDinamica
{
    long sizeMemoria;
    void * memoria;   
};

struct stuProceso
{
    int iPID;
    long size_tCantMem; 
    struct stuMemoriaDinamica stuMemDinPunteros[CANT_MAX_MEM_DIN];  
    int iCantMemDin; 
};

struct stuProceso stuProcesosCreados[CANT_MAX_PROC];

// Variables globales
int iIdxProcesos = 0;
int iCantidadProcesos = 0;

// Simula la creacion de un proceso
void vfnCrearProceso(long sizeMemoria, WINDOW *messagebar);

void vfnPedirMemoriaDinamica(int iIdx, long size, WINDOW *messagebar);

// Busca el proceso por PID y devuelve el indice (-1 si no lo encuentra)
int ifnBuscaProceso(int iPID);

void vfnOpcionCrearProceso(WINDOW *messagebar);

void vfnOpcionEliminarProceso(WINDOW *messagebar);

void vfnOpcionAsignarMasMemoria(WINDOW *messagebar);

void vfnOpcionDesasignarMemoria(WINDOW *messagebar);

void vfnOpcionVerProcesos(WINDOW *messagebar);
void vfnOpcionVerEstadisticas(WINDOW *messagebar);
void vfnVerMemoria();
void vfnMostrarMPT(WINDOW *messagebar);

#endif	/* SIMULADOR.H */

